package xpn.platform.modules.sys.permission;

import lombok.Getter;
import lombok.Setter;

import java.util.ArrayList;
import java.util.List;

/**
 * 授权检查请求，用于请求授权检查服务
 * 
 * @author bobatkm Oct 20, 2017
 *
 */
@Getter
@Setter
public class CheckPermissionRequest {
	private boolean hasRoleFunc = true; // 是否注入hasRole函数
	private boolean ouFunc = true; // 是否注入ou函数
	private boolean linkAttrFunc = true; // 是否注入取关联对象属性函数
	private List<InjectedEntity> injectedEntities = new ArrayList<InjectedEntity>(); // 注入的对象列表
	private List<Rule> rules = new ArrayList<Rule>(); // 检查的规则列表

	/*
	 * 内部静态类定义一个授权
	 */
	@Getter
	@Setter
	public static class InjectedEntity {
		private String refVarName = ""; // 引用对象变量名。注意：不能全部小写，否则不能正确访问变量。
		private String href = ""; // 对象的RESTful链接
		private String createdByHref = ""; // 引用对象创建人对象的RESTFUL链接。
	}

	/*
	 * 内部静态类定义一个授权
	 */
	@Getter
	@Setter
	public static class Rule {
		private String key = ""; // 规则的唯一标识
		private String rule = ""; // 授权规则
	}
}
